package com.cs171.market.controller;

import com.alibaba.fastjson.JSONObject;
import com.cs171.market.entity.Attribute;
import com.cs171.market.mapper.AttributeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author Endy
 * @create 2020 - 06 - 19 - 17:36
 * @date 2020/6/19 - 17:36
 */

@RestController
public class AttributeController {
    @Autowired
    AttributeMapper attributeMapper;
    @CrossOrigin

    @GetMapping("/categories/{id}/attributes")
    public Object getAttribute(@PathVariable("id")Integer id, @RequestParam("sel")String sel)
    {
        Integer success = 200;
        JSONObject jsonObject = new JSONObject();
        JSONObject metaObject = new JSONObject();
        List<Attribute> attribute = attributeMapper.getAttributeByIdAndSel(id, sel);
        metaObject.put("msg","获取成功");
        metaObject.put("status",success);
        jsonObject.put("data",attribute);
        jsonObject.put("meta",metaObject);
        return jsonObject;
    }
    @PostMapping("/categories/{id}/attributes")
    public Object setAttribute(@PathVariable("id")Integer id, @RequestParam("attr_name")String name,
                               @RequestParam("attr_sel")String sel, @RequestParam("attr_vals")String val)
    {
        Integer success = 200;
        JSONObject jsonObject = new JSONObject();
        JSONObject metaObject = new JSONObject();
        Attribute newAttribute = new Attribute();
        attributeMapper.setAttributeById(name, id, sel, val);
        Attribute attribute = attributeMapper.getNewAttribute();
        metaObject.put("msg","创建成功");
        metaObject.put("status",success);
        jsonObject.put("data",attribute);
        jsonObject.put("meta",metaObject);
        return jsonObject;
    }

    @DeleteMapping("/categories/{id}/attributes/{attrid}")
    public Object deleteAttribute(@PathVariable("id")Integer id,@PathVariable("attrid")Integer attrid)
    {
        Integer success = 200;
        JSONObject jsonObject = new JSONObject();
        JSONObject metaObject = new JSONObject();
        attributeMapper.deleteAttribute(id, attrid);
        metaObject.put("msg","删除成功");
        metaObject.put("status",success);
        jsonObject.put("data","null");
        jsonObject.put("meta",metaObject);
        return jsonObject;
    }

    @GetMapping("/categories/{id}/attributes/{attrid}")
    public Object getAttributeByIdAndAttrid(@PathVariable("id")Integer id,@PathVariable("attrid")Integer attrid,
                                            @RequestParam("sel")String sel)
    {
        Integer success = 200;
        JSONObject jsonObject = new JSONObject();
        JSONObject metaObject = new JSONObject();
        Attribute attribute = attributeMapper.getAttributeByIdAndAttridAndSel(id, attrid, sel);
        metaObject.put("msg","获取成功");
        metaObject.put("status",success);
        jsonObject.put("data",attribute);
        jsonObject.put("meta",metaObject);
        return jsonObject;
    }

    @PutMapping("/categories/{id}/attributes/{attrid}")
    public Object updateAttribute(@PathVariable("id")Integer id, @PathVariable("attrid")Integer attrid,
                                  @RequestParam("attr_name")String attrname, @RequestParam("attr_sel")String attrsel,
                                  @RequestParam("attr_vals")String attrval)
    {
        Integer success = 200;
        JSONObject jsonObject = new JSONObject();
        JSONObject metaObject = new JSONObject();
        attributeMapper.updateAttribute(id, attrid, attrname, attrsel, attrval);
        Attribute attribute = attributeMapper.getAttributeByIdAndAttridAndSel(id, attrid, attrsel);
        metaObject.put("msg","更新成功");
        metaObject.put("status",success);
        jsonObject.put("data",attribute);
        jsonObject.put("meta",metaObject);
        return jsonObject;
    }

}
